Skip to main content

FICO Explainable ML: HELOC

Introduction

In this walkthrough, we'll use Xplainable's platform to analyze the FICO Home Equity Line of Credit (HELOC) dataset. This dataset is commonly used to predict credit risk, helping to identify borrowers who may be at risk of defaulting on their line of credit.

We'll go step-by-step through Xplainable's features, starting with data preprocessing, moving on to model training, and finally, interpreting the results. The goal is to show how Xplainable can simplify the process of building and understanding machine learning models, providing clear insights without the need for complex coding or deep statistical knowledge. By the end of this walkthrough, you'll see how Xplainable can help you quickly draw meaningful conclusions from the FICO HELOC dataset.

Install and import relevant packages

!pip install altair==5.4.1 #Upgrade this to work in Google Colab
!pip install xplainable-client
!pip install xplainable=1.2.3
!pip install kaggle
Out:

Requirement already satisfied: altair==5.4.1 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (5.4.1)

Requirement already satisfied: jinja2 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from altair==5.4.1) (3.1.6)

Requirement already satisfied: jsonschema>=3.0 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from altair==5.4.1) (4.23.0)

Requirement already satisfied: narwhals>=1.5.2 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from altair==5.4.1) (1.40.0)

Requirement already satisfied: packaging in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from altair==5.4.1) (25.0)

Requirement already satisfied: typing-extensions>=4.10.0 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from altair==5.4.1) (4.13.2)

Requirement already satisfied: attrs>=22.2.0 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from jsonschema>=3.0->altair==5.4.1) (25.3.0)

Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from jsonschema>=3.0->altair==5.4.1) (2025.4.1)

Requirement already satisfied: referencing>=0.28.4 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from jsonschema>=3.0->altair==5.4.1) (0.36.2)

Requirement already satisfied: rpds-py>=0.7.1 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from jsonschema>=3.0->altair==5.4.1) (0.25.1)

Requirement already satisfied: MarkupSafe>=2.0 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from jinja2->altair==5.4.1) (3.0.2)

Requirement already satisfied: xplainable-client in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (1.2.6)

Requirement already satisfied: ipywidgets in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable-client) (8.1.7)

Requirement already satisfied: numpy in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable-client) (1.23.5)

Requirement already satisfied: pandas>=1.5.2 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable-client) (1.5.3)

Requirement already satisfied: pyperclip in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable-client) (1.9.0)

Requirement already satisfied: Requests in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable-client) (2.32.3)

Requirement already satisfied: scikit_learn in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable-client) (1.6.1)

Requirement already satisfied: setuptools>=65.5.1 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable-client) (80.8.0)

Requirement already satisfied: urllib3 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable-client) (2.4.0)

Requirement already satisfied: xplainable==1.2.3 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable-client) (1.2.3)

Requirement already satisfied: hyperopt>=0.2.7 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable==1.2.3->xplainable-client) (0.2.7)

Requirement already satisfied: numba>=0.56.4 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable==1.2.3->xplainable-client) (0.60.0)

Requirement already satisfied: scipy>=1.6.2 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable==1.2.3->xplainable-client) (1.15.3)

Requirement already satisfied: psutil>=5.9.4 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable==1.2.3->xplainable-client) (7.0.0)

Requirement already satisfied: joblib>=1.2.0 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable==1.2.3->xplainable-client) (1.5.1)

Requirement already satisfied: networkx>=2.6.3 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable==1.2.3->xplainable-client) (3.4.2)

Requirement already satisfied: tqdm>=4.62.3 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable==1.2.3->xplainable-client) (4.67.1)

Requirement already satisfied: ipython in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable==1.2.3->xplainable-client) (8.36.0)

Requirement already satisfied: packaging in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from xplainable==1.2.3->xplainable-client) (25.0)

Requirement already satisfied: python-dateutil>=2.8.1 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from pandas>=1.5.2->xplainable-client) (2.9.0.post0)

Requirement already satisfied: pytz>=2020.1 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from pandas>=1.5.2->xplainable-client) (2025.2)

Requirement already satisfied: six in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from hyperopt>=0.2.7->xplainable==1.2.3->xplainable-client) (1.17.0)

Requirement already satisfied: future in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from hyperopt>=0.2.7->xplainable==1.2.3->xplainable-client) (1.0.0)

Requirement already satisfied: cloudpickle in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from hyperopt>=0.2.7->xplainable==1.2.3->xplainable-client) (3.1.1)

Requirement already satisfied: py4j in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from hyperopt>=0.2.7->xplainable==1.2.3->xplainable-client) (0.10.9.9)

Requirement already satisfied: llvmlite<0.44,>=0.43.0dev0 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from numba>=0.56.4->xplainable==1.2.3->xplainable-client) (0.43.0)

Requirement already satisfied: threadpoolctl>=3.1.0 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from scikit_learn->xplainable-client) (3.6.0)

Requirement already satisfied: decorator in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from ipython->xplainable==1.2.3->xplainable-client) (5.2.1)

Requirement already satisfied: exceptiongroup in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from ipython->xplainable==1.2.3->xplainable-client) (1.3.0)

Requirement already satisfied: jedi>=0.16 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from ipython->xplainable==1.2.3->xplainable-client) (0.19.2)

Requirement already satisfied: matplotlib-inline in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from ipython->xplainable==1.2.3->xplainable-client) (0.1.7)

Requirement already satisfied: pexpect>4.3 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from ipython->xplainable==1.2.3->xplainable-client) (4.9.0)

Requirement already satisfied: prompt_toolkit<3.1.0,>=3.0.41 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from ipython->xplainable==1.2.3->xplainable-client) (3.0.51)

Requirement already satisfied: pygments>=2.4.0 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from ipython->xplainable==1.2.3->xplainable-client) (2.19.1)

Requirement already satisfied: stack_data in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from ipython->xplainable==1.2.3->xplainable-client) (0.6.3)

Requirement already satisfied: traitlets>=5.13.0 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from ipython->xplainable==1.2.3->xplainable-client) (5.14.3)

Requirement already satisfied: typing_extensions>=4.6 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from ipython->xplainable==1.2.3->xplainable-client) (4.13.2)

Requirement already satisfied: wcwidth in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from prompt_toolkit<3.1.0,>=3.0.41->ipython->xplainable==1.2.3->xplainable-client) (0.2.13)

Requirement already satisfied: parso<0.9.0,>=0.8.4 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from jedi>=0.16->ipython->xplainable==1.2.3->xplainable-client) (0.8.4)

Requirement already satisfied: ptyprocess>=0.5 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from pexpect>4.3->ipython->xplainable==1.2.3->xplainable-client) (0.7.0)

Requirement already satisfied: comm>=0.1.3 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from ipywidgets->xplainable-client) (0.2.2)

Requirement already satisfied: widgetsnbextension~=4.0.14 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from ipywidgets->xplainable-client) (4.0.14)

Requirement already satisfied: jupyterlab_widgets~=3.0.15 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from ipywidgets->xplainable-client) (3.0.15)

Requirement already satisfied: charset-normalizer<4,>=2 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from Requests->xplainable-client) (3.4.2)

Requirement already satisfied: idna<4,>=2.5 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from Requests->xplainable-client) (3.10)

Requirement already satisfied: certifi>=2017.4.17 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from Requests->xplainable-client) (2025.4.26)

Requirement already satisfied: executing>=1.2.0 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from stack_data->ipython->xplainable==1.2.3->xplainable-client) (2.2.0)

Requirement already satisfied: asttokens>=2.1.0 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from stack_data->ipython->xplainable==1.2.3->xplainable-client) (3.0.0)

Requirement already satisfied: pure_eval in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from stack_data->ipython->xplainable==1.2.3->xplainable-client) (0.2.3)

ERROR: Invalid requirement: 'xplainable=1.2.3': Expected end or semicolon (after name and no valid version specifier)

xplainable=1.2.3

^

Hint: = is not a valid operator. Did you mean == ?

Collecting kaggle

Downloading kaggle-1.7.4.5-py3-none-any.whl.metadata (16 kB)

Collecting bleach (from kaggle)

Using cached bleach-6.2.0-py3-none-any.whl.metadata (30 kB)

Requirement already satisfied: certifi>=14.05.14 in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from kaggle) (2025.4.26)

Requirement already satisfied: charset-normalizer in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from kaggle) (3.4.2)

Requirement already satisfied: idna in /Users/jtuppack/miniforge3/envs/xplainable-api/lib/python3.10/site-packages (from kaggle) (3.10)

import pandas as pd
from sklearn.model_selection import train_test_split
import json
import requests
import os

import xplainable_client
import xplainable as xp
from xplainable.core import XClassifier
from xplainable.core.optimisation.bayesian import XParamOptimiser

1. Import CSV and Perform Data Processing

data = pd.read_csv('https://xplainable-public-storage.syd1.digitaloceanspaces.com/example_data/heloc_dataset.csv')  # Set to False to skip Kaggle and use the local file
data.head()
RiskPerformanceExternalRiskEstimateMSinceOldestTradeOpenMSinceMostRecentTradeOpenAverageMInFileNumSatisfactoryTradesNumTrades60Ever2DerogPubRecNumTrades90Ever2DerogPubRecPercentTradesNeverDelqMSinceMostRecentDelq...PercentInstallTradesMSinceMostRecentInqexcl7daysNumInqLast6MNumInqLast6Mexcl7daysNetFractionRevolvingBurdenNetFractionInstallBurdenNumRevolvingTradesWBalanceNumInstallTradesWBalanceNumBank2NatlTradesWHighUtilizationPercentTradesWBalance
0Bad551444842030832...4300033-881169
1Bad61581541244100-7...670000-80-8-80
2Bad6766524900100-7...44044536642186
3Bad6616917328119376...57054728364391
4Bad81333271321200100-7...25011518931080
Out:

Dataset loaded from local path.

Where the defition of each of the fields are below:

Variable NamesDescription
RiskPerformancePaid as negotiated flag (12-36 Months). String of Good and Bad
ExternalRiskEstimateConsolidated version of risk markers
MSinceOldestTradeOpenMonths Since Oldest Trade Open
MSinceMostRecentTradeOpenMonths Since Most Recent Trade Open
AverageMInFileAverage Months in File
NumSatisfactoryTradesNumber of Satisfactory Trades
NumTrades60Ever2DerogPubRecNumber of Trades 60+ Ever
NumTrades90Ever2DerogPubRecNumber of Trades 90+ Ever
PercentTradesNeverDelqPercent of Trades Never Delinquent
MSinceMostRecentDelqMonths Since Most Recent Delinquency
MaxDelq2PublicRecLast12MMax Delinquency/Public Records in the Last 12 Months. See tab 'MaxDelq' for each category
MaxDelqEverMax Delinquency Ever. See tab 'MaxDelq' for each category
NumTotalTradesNumber of Total Trades (total number of credit accounts)
NumTradesOpeninLast12MNumber of Trades Open in Last 12 Months
PercentInstallTradesPercent of Installment Trades
MSinceMostRecentInqexcl7daysMonths Since Most Recent Inquiry excluding the last 7 days
NumInqLast6MNumber of Inquiries in the Last 6 Months
NumInqLast6Mexcl7daysNumber of Inquiries in the Last 6 Months excluding the last 7 days. Excluding the last 7 days removes inquiries that are likely due to price comparison shopping.
NetFractionRevolvingBurdenThis is the revolving balance divided by the credit limit
NetFractionInstallBurdenThis is the installment balance divided by the original loan amount
NumRevolvingTradesWBalanceNumber of Revolving Trades with Balance
NumInstallTradesWBalanceNumber of Installment Trades with Balance
NumBank2NatlTradesWHighUtilizationNumber of Bank/National Trades with high utilization ratio
PercentTradesWBalancePercent of Trades with Balance

Seperate data into target (y) and features (x)

y = data['RiskPerformance']
x = data.drop('RiskPerformance',axis=1)

Create test and train datasets

x_train, x_test, y_train, y_test = train_test_split(x,y, test_size=0.2, random_state=42, stratify=y)

2. Model Optimisation

Xplainable's XParamOptimiser fine-tunes the hyperparameters of our model. This produces the most optimal parameters that will result in the best model performance.

y_train_df = pd.Series(y_train)

optimiser = XParamOptimiser(metric='f1-score',n_trials=300, n_folds=2, early_stopping=150)
params = optimiser.optimise(x_train, y_train_df)
Out:

74%|███████▍ | 223/300 [00:12<00:04, 17.97trial/s, best loss: -0.7057194555537591]

3. Model Training

The XClassifier is trained on the dataset, with the optimised parameters.

model = XClassifier(**params)
model.fit(x_train, y_train)
Out:

<xplainable.core.ml.classification.XClassifier at 0x29ca500a0>

4. Explaining and Interpreting the Model

Following training, the model.explain() method is called to generate insights into the model's decision-making process. This step is crucial for understanding the factors that influence the model's predictions and ensuring that the model's behaviour is transparent and explainable.

model.explain()

Analysing Feature Importances and Contributions

Click on the bars to see the importances and contributions of each variable.

Feature Importances

The relative significance of each feature (or input variable) in making predictions. It indicates how much each feature contributes to the model’s predictions, with higher values implying greater influence.

Feature Significance

The effect of each feature on individual predictions. For instance, in this model, feature contributions would show how each feature (like the net fraction of trades revolving burden) affects the predicted risk estimate for a particular applicant.

5. Saving a model to the Xplainable App

In this step, we first create a unique identifier for our HELOC risk prediction model using client.create_model_id. This identifier, referred to as model_id, represents the newly created model that predicts the likelihood of applicants defaulting on their line of credit. After creating this model identifier, we generate a specific version of the model using client.create_model_version, passing in our training data. The resulting version_id represents this particular iteration of our model, allowing us to track and manage different versions systematically.

Creat an API key in the Xplainable platform

Heloc Deployment

client = xplainable_client.Client(
api_key="",#Insert API Key here
)
# Create a model
model_id = client.create_model(
model=model,
model_name="HELOC Model",
model_description="Predicting applicant risk estimates",
x=x_train,
y=y_train
)
Out:

0%| | 0/23 [00:00<?, ?it/s]

<Response [200]>

Xplainable App Model View

As you can see in the screenshot, now the model has been saved to Xplainable's webapp, allowing yourself and other members in your organisation to visually analyse the model.

Heloc Deployment

6. Deployments

The code block illustrates the deployment of our churn prediction model using the xp.client.deploy function. The deployment process involves specifying the hostname of the server where the model will be hosted, as well as the unique model_id and version_id that we obtained in the previous steps. This step effectively activates the model's endpoint, allowing it to receive and process prediction requests. The output confirms the deployment with a deployment_id, indicating the model's current status as 'inactive', its location, and the endpoint URL where it can be accessed for xplainable deployments.

model_id
Out:

{'model_id': 'TVCwjtghAkCR8KSQ', 'version_id': 'RbYBRcTBfLuyTYUF'}

deployment = client.deploy(
model_version_id=model_id["version_id"]
)
Out:

<Response [200]>

deployment
Out:

{'deployment_id': 'trsizk2zUOtKFdR8'}

Testing the Deployment programatically

This section demonstrates the steps taken to programmatically test a deployed model. These steps are essential for validating that the model's deployment is functional and ready to process incoming prediction requests.

  1. Activating the Deployment: The model deployment is activated using client.activate_deployment, which changes the deployment status to active, allowing it to accept prediction requests.
client.activate_deployment(deployment['deployment_id'])
Out:

{'message': 'activated deployment'}

  1. Creating a Deployment Key: A deployment key is generated with client.generate_deploy_key. This key is required to authenticate and make secure requests to the deployed model.
deploy_key = client.generate_deploy_key(deployment['deployment_id'],'HELOC Deploy Key', 7)
Out:

<Response [200]>

  1. Generating Example Payload: An example payload for a deployment request is generated by client.generate_example_deployment_payload. This payload mimics the input data structure the model expects when making predictions.
#Set the option to highlight multiple ways of creating data
option = 2
if option == 1:
body = client.generate_example_deployment_payload(deployment['deployment_id'])
else:
body = json.loads(data.drop(columns=["RiskPerformance"]).sample(1).to_json(orient="records"))
body
Out:

[{'ExternalRiskEstimate': 68,

'MSinceOldestTradeOpen': 156,

'MSinceMostRecentTradeOpen': 4,

'AverageMInFile': 75,

'NumSatisfactoryTrades': 31,

'NumTrades60Ever2DerogPubRec': 0,

'NumTrades90Ever2DerogPubRec': 0,

'PercentTradesNeverDelq': 94,

'MSinceMostRecentDelq': 12,

'MaxDelq2PublicRecLast12M': 6,

'MaxDelqEver': 6,

'NumTotalTrades': 35,

'NumTradesOpeninLast12M': 1,

'PercentInstallTrades': 37,

'MSinceMostRecentInqexcl7days': -7,

'NumInqLast6M': 0,

'NumInqLast6Mexcl7days': 0,

'NetFractionRevolvingBurden': 41,

'NetFractionInstallBurden': 85,

'NumRevolvingTradesWBalance': 5,

'NumInstallTradesWBalance': 2,

'NumBank2NatlTradesWHighUtilization': 0,

'PercentTradesWBalance': 70}]

  1. Making a Prediction Request: A POST request is made to the model's prediction endpoint with the example payload. The model processes the input data and returns a prediction response, which includes the predicted class (e.g., 'No' for no churn) and the prediction probabilities for each class.
response = requests.post(
url="https://inference.xplainable.io/v1/predict",
headers={'api_key': deploy_key['deploy_key']},
json=body
)

value = response.json()
value
Out:

[{'index': 0,

'id': None,

'partition': '__dataset__',

'score': 0.5011964337369303,

'proba': None,

'pred': 'Good',

'support': None,

'breakdown': [{'feature': 'base_value',

'value': None,

'score': 0.4780686028445082},

{'feature': 'ExternalRiskEstimate',

'value': '68',

'score': -0.010494705670801262},

{'feature': 'MSinceOldestTradeOpen',

'value': '156',

'score': 0.002339879609304599},

{'feature': 'MSinceMostRecentTradeOpen',

'value': '4',

'score': -0.00047711791608256044},

{'feature': 'AverageMInFile',

'value': '75',

'score': 0.0020254337303166397},

{'feature': 'NumSatisfactoryTrades',

'value': '31',

'score': 0.0023500082246000567},

{'feature': 'NumTrades60Ever2DerogPubRec',

'value': '0',

'score': 0.011256220898831106},

{'feature': 'NumTrades90Ever2DerogPubRec',

'value': '0',

'score': 0.007727365694721391},

{'feature': 'PercentTradesNeverDelq',

'value': '94',

'score': -0.004994618505281867},

{'feature': 'MSinceMostRecentDelq',

'value': '12',

'score': -0.019030421059650676},

{'feature': 'MaxDelq2PublicRecLast12M',

'value': '6',

'score': -0.003371928729410296},

{'feature': 'MaxDelqEver', 'value': '6', 'score': -0.008044595168283326},

{'feature': 'NumTotalTrades', 'value': '35', 'score': 0.012728462697346309},

{'feature': 'NumTradesOpeninLast12M',

'value': '1',

'score': 0.00315905436830356},

{'feature': 'PercentInstallTrades',

'value': '37',

'score': 0.0030159164487750406},

{'feature': 'MSinceMostRecentInqexcl7days',

'value': '-7',

'score': -0.010597293564717137},

{'feature': 'NumInqLast6M', 'value': '0', 'score': 0.011828849647445355},

{'feature': 'NumInqLast6Mexcl7days',

'value': '0',

'score': 0.011041977442703738},

{'feature': 'NetFractionRevolvingBurden',

'value': '41',

'score': -0.00766693504377547},

{'feature': 'NetFractionInstallBurden',

'value': '85',

'score': -0.006728467309717369},

{'feature': 'NumRevolvingTradesWBalance',

'value': '5',

'score': -0.0022589957615032513},

{'feature': 'NumInstallTradesWBalance',

'value': '2',

'score': 0.001922561631456002},

{'feature': 'NumBank2NatlTradesWHighUtilization',

'value': '0',

'score': 0.025646402630966857},

{'feature': 'PercentTradesWBalance',

'value': '70',

'score': 0.0017507765968747127}]}]

SaaS Deployment Info

The SaaS application interface displayed above mirrors the operations performed programmatically in the earlier steps. It displays a dashboard for managing the 'Telco Customer Churn' model, facilitating a range of actions from deployment to testing, all within a user-friendly web interface. This makes it accessible even to non-technical users who prefer to manage model deployments and monitor performance through a graphical interface rather than code. Features like the deployment checklist, example payload, and prediction response are all integrated into the application, ensuring that users have full control and visibility over the deployment lifecycle and model interactions.

Heloc Deployment